#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "MPU6050.h"
#include "Serial.h"
#include "Timer.h"

uint8_t ID;								//定义用于存放ID号的变量
int16_t AX, AY, AZ, GX, GY, GZ;			//定义用于存放各个数据的变量

uint16_t Num;			//定义在定时器中断里自增的变量

int main(void)
{
	/*模块初始化*/
	OLED_Init();		//OLED初始化
	MPU6050_Init();		//MPU6050初始化
	Serial_Init();		//串口初始化
	Timer_Init();		//定时中断初始化
	
	/*显示ID号*/
	// OLED_ShowString(1, 1, "ID:");		//显示静态字符串
	OLED_ShowString(1, 48, "fps:", OLED_6X8);		//显示静态字符串
	// ID = MPU6050_GetID();				//获取MPU6050的ID号
	// OLED_ShowHexNum(1, 4, ID, 2);		//OLED显示ID号
	
	while (1)
	{
		MPU6050_GetData(&AX, &AY, &AZ, &GX, &GY, &GZ);		//获取MPU6050的数据
        //显示原始加速度计数据
        OLED_ShowString(0, 0, "AX:", OLED_6X8);
        OLED_ShowSignedNum(20, 0, AX, 5, OLED_6X8);
        
        OLED_ShowString(0, 16, "AY:", OLED_6X8);
        OLED_ShowSignedNum(20, 16, AY, 5, OLED_6X8);
        
        OLED_ShowString(0, 32, "AZ:", OLED_6X8);
        OLED_ShowSignedNum(20, 32, AZ, 5, OLED_6X8);
        
        // 显示原始陀螺仪数据
        OLED_ShowString(64, 0, "GX:", OLED_6X8);
        OLED_ShowSignedNum(80, 0, GX, 5, OLED_6X8);
        
        OLED_ShowString(64, 16, "GY:", OLED_6X8);
        OLED_ShowSignedNum(80, 16, GY, 5, OLED_6X8);
        
        OLED_ShowString(64, 32, "GZ:", OLED_6X8);
        OLED_ShowSignedNum(80, 32, GZ, 5, OLED_6X8);
        OLED_Flush();

		//使用printf函数发送数据
		Serial_Printf("%d,%d,%d,%d,%d,%d\r\n", AX, AY, AZ, GX, GY, GZ);	//使用printf函数发送数据
		Num ++;
	}
}

/**
  * 函    数：TIM2中断函数
  * 参    数：无
  * 返 回 值：无
  * 注意事项：此函数为中断函数，无需调用，中断触发后自动执行
  *           函数名为预留的指定名称，可以从启动文件复制
  *           请确保函数名正确，不能有任何差异，否则中断函数将不能进入
  */
 void TIM2_IRQHandler(void)
 {
	 if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)		//判断是否是TIM2的更新事件触发的中断
	 {
		 OLED_ShowNum(25, 48, Num, 3, OLED_6X8);													 
		 Num = 0;												//Num变量自增，用于测试定时中断
		 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);			//清除TIM2更新事件的中断标志位
															 //中断标志位必须清除
															 //否则中断将连续不断地触发，导致主程序卡死
	 }
 }
